package 春招算法加速;

public class 字符串碎片 {
    /*
    一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。
    例如,"aaabbaaac"是由下面碎片组成的:'aaa','bb','c'。
    现在给定一个字符串,请你帮助计算这个字符串的所有碎片的平均长度是多少，结果直接取整，无需保留小数

输入例子1:
"aaabbaaac"

输出例子1:
2

例子说明1:所有碎片的平均长度= (3 + 2 + 3 + 1) / 4 = 2
     */
    public static int GetFragment(String str) {
        //如果是0直接输出
        if (str.length() == 0) {
            return 0;
        }
        //统计有多少份碎片
        int count = 0;
        //存入每份碎片的长度
        int[] length = new int[str.length()];
        //当前是第几份碎片
        int x = 0;
        for (int i = 0; i < str.length() - 1; i++) {
            //当前第x份碎片长度从1开始计算
            if (length[x] == 0) {
                length[x] = 1;
            }
            //如果跟下一个相同则长度+1
            if (str.charAt(i) == str.charAt(i + 1)) {
                length[x]++;
            } else {
                //不相同则跳到下一份，
                x++;
                count++;
            }
        }
        if (str.charAt(str.length() - 2) != str.charAt(str.length() - 1)) {
            count++;
        }

        return str.length() / count;
    }

    public static void main(String[] args) {
        System.out.println(GetFragment("aaabbaaac"));
    }

}
